草庐IT

php - 扩展或实现 simplexml 以避免 DRY

全部标签

ruby-on-rails - 如何使用其他方法扩展 ActiveRecord::Migration?

我正在创建一个Rubygem,并希望使用我自己的助手来扩展ActiveRecord::Migration以创建必要的列。(这类似于Devise在为其各种身份验证策略创建迁移时所做的事情。)我意识到我添加的功能本身非常微不足道,并且可能有更好/更有效的方法来做到这一点-我正在尝试将其作为学习经验而不是实际应用的东西。我只是想了解如何做一些像在Rails中添加新的迁移功能这样具有侵入性的事情。到目前为止,我已经成功构建到gem中并安装了,但是当我尝试运行如下迁移时:classCreatePosts...它没有说hideable没有定义。我研究了Devise完成此操作的方式,我不得不承认我有

ruby - Rails4 sprockets ; Assets 逻辑路径没有扩展名

我最近升级到Rails4,在运行我的请求规范时,我开始收到以下错误:Failure/Error:UnabletofindmatchinglinefrombacktraceSprockets::ArgumentError:Assetlogicalpathhasnoextension:europeBlockquote#/usr/local/rvm/gems/ruby-1.9.3-p448/gems/sprockets-2.10.1/lib/sprockets/asset.rb:36:ininitialize'#/usr/local/rvm/gems/ruby-1.9.3-p448/gems

ruby-on-rails - 限制文件上传到某些文件扩展名

我在上传文件时遇到问题。我想让用户上传系统允许的文件...例如,我允许用户上传扩展名为*.jpg的文件。因此,在文件选择窗口中,他们只能看到扩展名为jpg的文件。我怎样才能在RoR中得到这个? 最佳答案 在HTML5中,您可以使用:accept来限制mime类型,如下所示:'text/csv'%> 关于ruby-on-rails-限制文件上传到某些文件扩展名,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

ruby - 为什么模块 `ClassMethods` 在同一个命名空间中定义和扩展?

我正在尝试理解来自githubrepo的代码.它是设置客户端的gem的主要模块。moduleGithub#morecodeclass为什么是class和moduleClassMethods使用,然后扩展而不是包含在class中部分?有一个类方法defincluded(base).这似乎将类方法添加到特定对象中。为什么会这样?它可能与类的功能有关,但我不明白。 最佳答案 moduleMyModuleclassendend这实际上是Ruby中很常见的做法。基本上,它的意思是:当某个对象执行includeMyModule时,也使它也ext

ruby - 为什么扩展模块中的常量在用 self. 声明的类方法中不可用?

我认为在class中声明的方法之间没有区别block和用self.声明的block前缀,但有:moduleAVAR='some_constant'endclassBextendAclassOKB.m2#=>uninitializedconstantB::VAR为什么A的常量是可用m1但不在m2? 最佳答案 在Ruby中,常量查找与方法查找不同。对于方法查找,调用foo始终与调用self.foo相同(假设它不是私有(private)的)。调用常量FOO与self::FOO非常不同或singleton_class::FOO.使用非限定常

ruby - 如何在 jRuby 中启用 C 扩展支持?

我想安装一个gem,但出现以下错误:Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtwitter-login:ERROR:Failedtobuildgemnativeextension.C:/nwcloud/jruby-1.7.2/bin/jruby.exeextconf.rbNotImplementedError:Cextensionsupportisnotenabled.Pass-Xcext.enabled=truetoJRubyorsetJRUBY_OPTSormodify.jrubyrct

ruby - 在另一个模块中扩展模块

我正在尝试定义几个模块,以便轻松地将一些实例和类方法添加到其他类中,这就是我正在做的事情:moduleFoomoduleBardefspeakputs"heythere"endendmoduleBazextendFoo::Bardefwelcomeputs"welcome,thisisaninstancemethod"endendendclassTalkerincludeFoo::BazendTalker.new.welcomeTalker.speak这个的输出是:welcome,thisisaninstancemethodundefinedmethod'speak'forTalker

ruby-on-rails - rails 是如何实现 before_filter 的?

我对Rails如何实现像before_filter这样的过滤器很感兴趣。但是看了源码还是一头雾水。我注意到rails的框架维护了一个filter_chain,并在目标方法之前运行过滤器。但是,我不明白一个重要的过程:rails是如何捕获方法调用的?我的意思是,例如,我有一个类Dog,并为方法bark设置了一个before_filter。当我调用dog.bark时,rails应该以某种方式捕获此调用,并改为运行其修改后的方法。但是,我在源代码中没有找到这样的代码。任何人都可以告诉我这个想法或指出代码所在的位置吗? 最佳答案 当您设置b

ruby - 是否有针对 Ruby 的 ISO-8601 日期解析的完整实现?

Time.iso8601方法是ISO-8601的一个受限子集。它有什么局限性?有人知道Ruby的完整实现吗?我正在使用MRI1.8.7。更新看起来没有一个类可以处理所有各种8601日期和日期/时间组合。但是,我设法通过使用Date.parse和Time.iso8601方法解决了这些问题。缺点是您需要在代码中决定输入看起来像日期还是日期/时间。警告:时区差异Time.iso8601和Time.parse的行为不同。>>Time.parse("2010-09-06T12:27:00.10-05:00")=>MonSep0618:27:00+01002010>>Time.iso8601("2

ruby - 一个更好的 Ruby 实现,将十进制舍入到最接近的 0.5

这看起来非常低效。谁能给我一个更好的Ruby方式。defround_valuex=(self.value*10).round/10.0#roundstotwodecimalplacesr=x.modulo(x.floor)#findsremainderf=x.floorself.value=casewhenr.between?(0,0.25)fwhenr.between?(0.26,0.75)f+0.5whenr.between?(0.76,0.99)f+1.0endend 最佳答案 classFloatdefround_point